// 存放接口

// // 接口的声明和使用
// 1、找到页面的需要对应哪个接口
// 2、问后端的同事找后端 或者看接口文档 如果没有接口文档自己mock（模拟接口） 怒润
// 3、看接口 接口地址 接口的请求方式 接口携带的参数 接口返回的数据
// 4、在api中封装接口 返回一个request方法在方法中配置接口的
// 接口地址 接口的请求方式 接口携带的参数（有什么配置什么，没有可以省略不写）
// 5、在合适的位置调用接口

// 浏览器请求的查看
// 重点关注最左侧的红色小按钮 （录制）如果发现请求之后一个接口都没有 说明录制没开
// 重点关注小漏斗中的筛选里面是否有过滤条件 如果有将他清掉
// 重点关注no throttling将网络状态关掉

// 拿到接口之后怎么查看
// 点击接口就可以进入接口详情
// 重点关注 标头 headers 载荷 payload 预览 preview
// 1、如果接口是404 说明接口没有找到 重点看一下标头中的Request URL和接口文档中的是否一致
// 2、如果返回的状态码不是404也不是500多的大概率是接口传参传错 重点看【载荷】中的传参和【预览】中的错误返回与接口文档对照
// 3、接口返回状态码是500多的需要检查一下 【标头】中的Request Method 请求的方法是否和接口文档一致
// 4、如果接口返回状态码是401 说明后端需要的token没有传或者过期
// 后端服务如果真的挂了，需要及时和后端说
import request from '@/utils/request.js'
import store from '../store'

// 封装接口请求的方法
export const allChannelListAPI = () => {
  return request({
    url: '/v1_0/channels'
  })
}

// 用户登录接口
export const loginApi = ({ mobile, code }) => {
  return request({
    url: '/v1_0/authorizations',
    method: 'POST',
    data: {
      mobile,
      code
    }
  })
}

export const userChannelAPI = () => {
  return request({
    url: '/v1_0/user/channels'
  })
}

// 获取新闻列表数据
export const articlesListAPI = ({ channelId, timestamp }) => {
  return request({
    url: '/v1_0/articles',
    method: 'GET',
    params: {
      channel_id: channelId,
      // 兼容性写法 保证当前面的timestamp 没有值的时候会取到后面的(new Date()).getTime()
      // 防止请求参数缺失 接口报错
      timestamp: timestamp || (new Date()).getTime()
    }
  })
}

// 对文章不喜欢
export const articleDislikeAPI = ({ target }) => {
  return request({
    url: '/v1_0/article/dislikes',
    method: 'POST',
    data: {
      target: target
    }
  })
}

// 举报文章
export const articleReportsAPI = ({ target, type, remark }) => {
  return request({
    url: '/v1_0/article/reports',
    method: 'POST',
    data: {
      target: target,
      type: type,
      remark: remark
    }
  })
}

// 频道管理_更新频道
export const updateChannelAPI = ({ channels }) => {
  return request({
    url: '/v1_0/user/channels',
    method: 'PUT',
    data: {
      channels: channels
    }
  })
}

// 获取联想建议
export const suggestListAPI = ({ q }) => {
  return request({
    url: '/v1_0/suggestion',
    params: {
      q: q
    }
  })
}

// 获取搜索结果
export const searchResultListAPI = ({ q, page = 1 }) => {
  return request({
    url: '/v1_0/search',
    params: {
      q: q,
      page: page
    }
  })
}

// 获取新闻详情
export const articleDetailAPI = ({ id }) => {
  return request({
    // 路径传参
    url: `/v1_0/articles/${id}`
  })
}

// 关注用户
export const followedUserAPI = ({ target }) => {
  return request({
    url: '/v1_0/user/followings',
    method: 'POST',
    data: {
      target: target
    }
  })
}

// 取消关注用户
export const unFollowedUserAPI = ({ uid }) => {
  return request({
    url: `/v1_0/user/followings/${uid}`,
    method: 'DELETE'
  })
}

// 文章点赞
export const articleLikeAPI = ({ target }) => {
  return request({
    url: '/v1_0/article/likings',
    method: 'POST',
    data: {
      target: target
    }
  })
}
// 文章取消点赞
export const articleDisLikeAPI = ({ artId }) => {
  return request({
    url: `/v1_0/article/likings/${artId}`,
    method: 'DELETE'
  })
}

// 获取评论或评论回复
export const commentListAPI = ({
  source,
  offset = null,
  limit
}) => {
  return request({
    url: '/v1_0/comments',
    params: {
      type: 'a',
      source: source,
      offset: offset,
      limit: limit
    }
  })
}

// 评论 - 喜欢
export const commentLikingAPI = ({ comId }) => {
  return request({
    url: '/v1_0/comment/likings',
    method: 'POST',
    data: {
      target: comId
    }
  })
}
// 评论-取消喜欢
export const commentDisLikingAPI = ({ comId }) => {
  return request({
    url: `/v1_0/comment/likings/${comId}`,
    method: 'DELETE'
  })
}

// 文章评论
export const sendCommentAPI = ({ target, content }) => {
  return request({
    url: '/v1_0/comments',
    method: 'POST',
    data: {
      target: target,
      content: content
    }
  })
}

// 用户 - 基本资料
export const userInfoAPI = () => {
  return request({
    url: '/v1_0/user'
  })
}

// 用户- 个人资料(就为了获取生日)
export const userProfileAPI = () => {
  return request({
    url: '/v1_0/user/profile'
  })
}

// 编辑用户照片资料
export const updatePhotoAPI = (formObj) => {
  return request({
    url: '/v1_0/user/photo',
    method: 'PATCH',
    // 通过将文件对象直接传入的方式传参，叫做 multipart/form-data 传参
    // 如果你的请求体内容是表单对象, 浏览器会自动携带请求头Content-Type为multipart/form-data
    data: formObj
  })
}

// 用户 - 更新资料
export const updateProfileAPI = ({ birthday, userName }) => {
  return request({
    url: '/v1_0/user/profile',
    method: 'PATCH',
    data: {
      birthday: birthday,
      name: userName
    }
  })
}

// 用户 - 更新token
export const refreshTokenAPI = () => request({
  url: '/v1_0/authorizations',
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${store.state.refresh_token}`
  }
})
